【iOS】Firebaseのアプリ内メッセージが表示されない時の対処法
FirebaseのIn-App Messagingで設定したアプリ内メッセージが表示されない不具合に遭遇した為、対処法を記載しておきます。
環境
- Xcode 13.4.1
- Firebase Apple SDK 9.4.1
はじめに
前提条件として、アプリとFirebaseの連携は済んでいる状態から進めていきます。
現象
Firebaseのドキュメントによれば、Firebase In-App Messagingのインストールはとても簡単です。
- Firebaseでプロジェクト作成
- Xcodeで作成しているプロジェクトにFirebase SDKを追加
- Xcodeで作成しているプロジェクトにGoogleService-Info.plistを追加
AppDelegate
内でFirebaseApp.configure()
を呼ぶ
import UIKit import FirebaseCore @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { FirebaseApp.configure() return true } }
こちらを行えば、アプリ内メッセージを送ると表示されるはずでした。
しかし、こちらの設定は完了してアプリ内メッセージを送っているはずなのに表示されないという不具合が発生しました。
解決策
Xcodeのデバッグコンソールを確認してみると、下記のメッセージがありました。
Firebase In-App Messaging API has not been used in project xxxxxxxxxx before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/firebaseinappmessaging.googleapis.com/overview?project=xxxxxxx then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
Firebase In-App Messaging API は、プロジェクト xxxxxxxxxx でまだ使用されていないか、無効になっています。
https://console.developers.google.com/apis/api/firebaseinappmessaging.googleapis.com/overview?project=xxxxxxx にアクセスして有効にしてから、再試行してください。
この API を最近有効にした場合は、アクションがシステムに反映されるまで数分待ってから、再試行してください。
この設定について、ドキュメントに記載はなかったのですが、Firebase In-App Messaging APIの利用をまだ有効に出来ていないのが今回のメッセージが届かない原因だったようです。
表示されているURLにアクセスすると、Firebase In-App Messaging APIを有効にするという画面が表示されます。
こちらを有効にすると無事にアプリ内メッセージが表示されるようになりました。
サポートに確認してみた
In-App Messagingを使用している別のプロジェクトではこちらの設定は特にせずとも、アプリ内メッセージを確認することが出来ていました。なので、この違いについてFirebase サポートに確認をしてみました。
あなたの質問については、プロジェクトに対して FIAM API が自動的に有効になりますが、特定の API キーに制限を加える場合は FIAM API を追加する必要があります。
基本的には自動的に有効になるが、特定の条件で、手動で有効にする必要がありそうです。
おわりに
今回はアプリ内メッセージが表示されない一つのケースの解決策を記載させていただきました。
アプリ内メッセージが表示されない、届かない原因は、他にもFirebaseとの連携が出来なかったり等あると思いますが、デバッグコンソールを見てみるとそこに何か解決策があるかもしれません。
ただ、出来れば今回の件もドキュメントに記載してあれば嬉しかったです。
この記事が誰かの助けになれば幸いです。